package farmers.other;

import java.text.DecimalFormat;

// 教程网址 https://www.python100.com/html/71186.html
public class 数字补0 {

    public static void main(String[] args) {
        method_1();
        method_2();
        method_4();
    }

    // 一、使用String.format实现补0操作
    // String.format是Java中处理字符串格式化的方法，通过占位符%和格式化字符实现字符串的格式化。在补0操作中，我们只需要使用%0Nd占位符，其中N代表补0后数字的总位数。下面是一个示例代码：
    public static void method_1(){
        int num = 12;
        String formattedNum = String.format("%03d", num);
        System.out.println(formattedNum);
        // 以上代码将输出"012"，因为%03d的意思是输出一个3位数字，不足3位则在前面补0。
    }

    // 二、使用DecimalFormat实现补0操作
    // DecimalFormat是Java中处理数字格式化的类，可以通过设置格式来补0。下面是一个示例代码：
    public static void method_2(){
        int num = 12;
        DecimalFormat df = new DecimalFormat("000");
        String formattedNum = df.format(num);
        System.out.println(formattedNum);
        // 以上代码同样会输出"012"，因为格式化字符串"000"表示输出3位数字，不足3位则在前面补0。
    }

    // 三、使用StringUtils实现补0操作
    // StringUtils是一个开源的字符串处理工具类，在Apache Commons Lang库中提供了补0的实现方式。下面是一个示例代码：
//    public static void method_3(){
//        int num = 12;
//        String formattedNum = StringUtils.leftPad(String.valueOf(num), 3, "0");
//        System.out.println(formattedNum);
//        // 以上代码同样会输出"012"，其中StringUtils.leftPad方法将数字转化为字符串，然后在左侧补充0，直到字符串长度达到3。
//    }

    // 四、使用StringBuilder实现补0操作
    // StringBuilder是Java中线程安全的字符串操作类，可以有效地进行字符串操作。下面是一个示例代码：
    public static void method_4(){
        int num = 12;
        StringBuffer sb = new StringBuffer(String.valueOf(num));
        while (sb.length() < 3) {
            sb.insert(0, "0");
        }
        String formattedNum = sb.toString();
        System.out.println(formattedNum);
        // 以上代码同样会输出"012"，其中使用了while循环和insert方法，在数字前面添加0，直到字符串长度达到3。
    }

}
